package basic;

/**
 * @Description: TODO instanceof和isInstance()
 * @Author: wzj
 * @Date: 2020/5/14 19:49
 */
public class InstanceOfAndIsInstance {
    public static void main(String[] args) {
        Test t=new Test();
        Test t1=new Test();
        TestSon tSon=new TestSon();

        Object o=new Object();
        //A.isInstance(b)
        //A是类类型，b是一个对象实例，表示b能不能被转化为A这个类
        System.out.println(t1.getClass().isInstance(t));//true 只要是Test的实例获取的class都是Test 所以t1.getClass()和t.getClass()返回是一样的
        System.out.println(t.getClass().isInstance(t));//true
        System.out.println(o.getClass().isInstance(t));//true
        System.out.println(t.getClass().isInstance(tSon));//true
        System.out.println(tSon.getClass().isInstance(t));//false

        //a instanceof B
        //a是对象实例名称，B是一个类名，表示a是否是B类型或者B的子类型
        System.out.println(t instanceof Test);//true
        System.out.println(t instanceof Object);//true
        System.out.println(tSon instanceof Test);//true
        System.out.println(t instanceof TestSon);//false
    }
}
class Test{}
class TestSon extends Test{}
